#ifndef __WORDSEGMENTATION_H__
#define __WORDSEGMENTATION_H__

#include "../../include/cppjieba/Jieba.hpp"

#include <string>
#include <vector>

using std::string;
using std::vector;

const char * const DICT_PATH = "../../include/cppjieba/dict/jieba.dict.utf8";//最大概率法(MPSegment: Max Probability)分词所使用的词典路径
const char * const HMM_PATH = "../../include/cppjieba/dict/hmm_model.utf8";//隐式马尔科夫模型(HMMSegment: Hidden Markov Model)分词所使用的词典路径
const char * const USER_DICT_PATH = "../../include/cppjieba/dict/user.dict.utf8";//用户自定义词典路径
const char* const IDF_PATH = "../../include/cppjieba/dict/idf.utf8";//IDF路径
const char* const STOP_WORD_PATH = "../../include/cppjieba/dict/stop_words.utf8";//停用词路径


class WordSegmentation {
public:
    WordSegmentation(): _jieba(DICT_PATH, HMM_PATH, USER_DICT_PATH,IDF_PATH,STOP_WORD_PATH) {}

    //vector<string> operator()(const string str)//返回str的分词结果
    //{
    //    vector<string> words;
    //    /* _jieba.Cut(str, words);//FullSegment */
    //    _jieba.CutSmall(str, words, 1);//FullSegment
    //    return words;
    //}
    vector<string> cutSmall(const string str, int size) {
        vector<string> words;
        _jieba.CutSmall(str, words, size);
        return words;
    }
    vector<string> cut(const string str) {
        vector<string> words;
        _jieba.Cut(str, words);
        return words;
    }


private:
    cppjieba::Jieba _jieba;
};


#endif

